Android学习笔记-常用的一些源码,防止忘记了。。。

设置拨打电话

StringdialUri=”tell:”+m_currentTelNumble;

IntentcallIntent=new Intent(Intent.ACTION_CALL);

callIntent.setData(Uri.parse(dialUri));

startActivity(callIntent);

1.

长点击控件菜单,即我们常说的右键菜单,不过好像ContextMenu不支持ICON的,
所以即使在源码里面可以使用setIcon函数,但是还是不会有效果的。。。
一般有下面三个步骤:
// 通常在onCreate函数中注册一个控件,btn为需要弹出ContextMenu的控件
this.registerForContextMenu(btn);
///
// 下面函数是创建ContextMenu的,v是被点击的控件
// 根据v进行判断可以对不同的控件,创建不同的ContextMenu
public void onCreateContextMenu(ContextMenu menu, View v,
                     ContextMenuInfomenuInfo)
///
// 下面函数是响应ContextMenu点击事情的。。
public boolean onContextItemSelected(MenuItem item)

2.
Toast显示信息,可以方便的来输出信息
Toast.makeText(this, "Info", Toast.LENGTH_LONG).show();

3.
关于MENU的操作
有两个比较重要的了,函数原型:
public abstract MenuItem add (int groupId, int itemId, int order, CharSequencetitle);
public abstract SubMenu addSubMenu (CharSequence title);
一般的函数有:
menu.setHeaderTitle("MenuTitle");
menu.setHeaderIcon(R.drawable.icon);
menu.add(0, 0, 0, "item0").setIcon(R.drawable.icon);
menu.add(0, 1, 1, "item1");
///
SubMenu sub = menu.addSubMenu("SubMenu");
sub.add(0, 5, 5, "item5");
sub.add(0, 6, 6, "item6");

4.
获取屏幕的分辨率
isplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
dm.widthPixels
dm.heightPixels

5.
显示POPUP对话框,类似于Windows的MessageBox函数,不过这个要比MessageBox强大多了,,,
可以设置单选或者多选项,以及其响应,有两种方法可以
一:
实现Activity的onCreateDialog函数。
showDialog(ID_TEST_DIALOG);
protected Dialog onCreateDialog(int id) {
       // TODO Auto-generated method stub
       switch (id) {
       case ID_TEST_DIALOG:
              Dialog dialog = newAlertDialog.Builder(this)
              .setTitle("AlertDialogTest")
              .setMessage("This is atest for AlertDialg!")
              .setPositiveButton("OK",new DialogInterface.OnClickListener() {
                     public voidonClick(DialogInterface dialog, int which) {
                            // TODOAuto-generated method stub
                                  
                            }
              })
              .create();
              return dialog;
       default:
              break;
       }
       return super.onCreateDialog(id);
}
这里有个配套的函数
dismissDialog(D_TEST_DIALOG);
这个可以关闭相应的Dialog.
///
二:
直接调用Builder函数去完成创建与显示。
new AlertDialog.Builder(this)
       .setTitle("AlertDialogTest")
       .setMessage("This is a testfor AlertDialg!")
       .setPositiveButton("OK",new DialogInterface.OnClickListener() {
              public voidonClick(DialogInterface dialog, int which) {
                     // TODOAuto-generated method stub
                                  
                     }
              })
       .show();

6.
从一个xml布局获取其View的方法。
这个好像有两种方法,不过都是得到一个LayoutInflater之后再inflate得到指定xml布局相对应的View.
一:
LayoutInflater li;
li = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.la_test, null);
二:
LayoutInflater li;
li = LayoutInflater.from(this);
View v = li.inflate(R.layout.la_test, null);

7.
知道第二个方法和第六个方法之后,我们可以把这两个方法综合起来。
就是可以自定义的显示一段时间的图形,这个说法有点抽象,简单一点就是做一个类似音量调节那样的浮动窗口。
思路是这样的,可以新建一个Toast,然后再inflate一个布局,设置里面的内容,然后再把内容放到Toast里面显示
LayoutInflater li;
li = LayoutInflater.from(this);
View v = li.inflate(R.layout.la_test, null);
Toast toast = new Toast(this);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(v);
toast.show();

8.
当按返回键时,完全按退出系统
@Override
protected void onDestroy() {
       // TODO Auto-generated method stub
       android.os.Process.killProcess(android.os.Process.myPid());
       super.onDestroy();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
       // TODO Auto-generated method stub
       if (keyCode ==KeyEvent.KEYCODE_BACK) {
              finish();
              return true;
       }
       return super.onKeyDown(keyCode,event);
}

9.
获取状态栏和标题栏的高度
获取状态栏高度: 
decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。 
于是,我们就可以算出状态栏的高度了。
Rect frame = new Rect();  
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
int statusBarHeight = frame.top; 
获取标题栏高度: 
getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。 
int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
//statusBarHeight是上面所求的状态栏的高度  
int titleBarHeight = contentTop - statusBarHeight

10.
关于窗口的一些操作
不显示标题栏
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
或者是设置一个style属性,主题,加入下面的项
<item name="android:windowNoTitle">true</item>

设置背景半暗
LayoutParams lp = getWindow().getAttributes();
lp.dimAmount = 0.5f;
// 设置透明度是alpha的值
// lp.alpha = 0.8f;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

设置背景模糊
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
       WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

一般可能有用的style设置,以防以后忘记了,,,
<itemname="android:windowBackground">@drawable/color_translucent</item>
<item name="android:windowIsTranslucent">true</item>

11.
获取SD卡总空间和可用空间
       public static StringgetSDcardStorage() {
              String state =Environment.getExternalStorageState();
              if(Environment.MEDIA_MOUNTED.equals(state)){
                     File sdcardDir =Environment.getExternalStorageDirectory();
                 StatFs sf = newStatFs(sdcardDir.getPath());
                 long blockSize= sf.getBlockSize();
                 long blockCount= sf.getBlockCount();
                 long availCount= sf.getAvailableBlocks();
                 return "SD卡:" + formatSize(blockSize*blockCount)
                    + " 可用空间:"+ formatSize(availCount*blockCount);
              }
              return null;
       }

获取系统空间和可用空间
       public static StringgetSystemStorage() {
              File root = Environment.getRootDirectory();  
        StatFs sf = new  StatFs(root.getPath());  
        long  blockSize = sf.getBlockSize();  
        long  blockCount = sf.getBlockCount();  
        long  availCount =sf.getAvailableBlocks();   
        return "总空间:"+ formatSize(blockSize*blockCount)
      + " 可用空间:" + formatSize(availCount*blockSize);
    }

12.
在资源文件中使用Android定义的资源的方法
在Android系统中定义了很多动画与样式,我们可能在eclipse开发程序的时候使用系统定义的资源,
哈哈,这样可以保持与系统显示的样式一致~~~
对于定义为:android.R.drawable.status_bar_item_background的样式,
只需在eclipse的资源文件中写为:@android:drawable/status_bar_item_background
总结一下,所以可以写为下面的样子。。。
android:background="@android:drawable/status_bar_item_background"

13.
Android.mk文件的说明。
JAR: include $(BUILD_JAVA_LIBRARY),源文件为java
SO:include $(BUILD_SHARED_LIBRARY),源文件为 c或c++
APK:include $(BUILD_PACKAGE),源文件为java
二进制可执行文件:include $(BUILD_EXECUTABLE),源文件为c或c++

如需要在java文件中调用so文件,如:libabc.so则需在Android.mk文件中添加:
LOCAL_JNI_SHARED_LIBRARIES := libabc
同时,需要在java文件中System.loadLibrary("abc");,注意此时不需要在加上lib前缀

14.
模拟按键消息
       private void sendVKeyDelay(int key){
              final int keyCode = key;
              Thread sendKeyDelay = newThread(){
                     public void run() {
                            try {
                                   Thread.sleep(100);
                                  
                                   longnow = SystemClock.uptimeMillis();
                                   KeyEventkeyDown = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,
                                                 keyCode,0);
                                   IWindowManagerwm = IWindowManager.Stub.asInterface(
                                                 ServiceManager.getService("window"));
                                   wm.injectKeyEvent(keyDown,false);
                                  
                                   KeyEventkeyUp = new KeyEvent(now, now, KeyEvent.ACTION_UP,
                                                 keyCode,0);
                                   wm.injectKeyEvent(keyUp,false);
                            } catch(InterruptedException e) {
                                   e.printStackTrace();
                            } catch(RemoteException e) {
                                   e.printStackTrace();
                            }
                     }
              };
              sendKeyDelay.start();
       }

15.
使用startActivity应该注意的异常,处理各种情况跟异常!!!
    void startActivitySafely(Intent intent) {
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        try {
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this,R.string.activity_not_found, Toast.LENGTH_SHORT).show();
        } catch (SecurityException e) {
            Toast.makeText(this,R.string.activity_not_found, Toast.LENGTH_SHORT).show();
            e(LOG_TAG, "Launcher doesnot have the permission to launch " + intent +
                   ". Make sure to create a MAIN intent-filter for the correspondingactivity " +
                   "or use the exported attribute for this activity.", e);
        }
    }

16.
创建动画效果。
       public void createAnimation() {
              if (mInAnimation == null) {
                     mInAnimation  =new AnimationSet(false);
                     final AnimationSetani = mInAnimation;
                     ani.setInterpolator(newAnticipateOvershootInterpolator(2.5f));
                     ani.addAnimation(newAlphaAnimation(0.0f, 1.0f));
                     ani.addAnimation(newTranslateAnimation(Animation.ABSOLUTE, 0.0f, 
                            Animation.ABSOLUTE,0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
                            Animation.RELATIVE_TO_SELF,0.0f));
                     ani.setDuration(1000);
              }
              if (mOutAnimation == null) {
                     mOutAnimation = newAnimationSet(false);
                     AnimationSet ano =mOutAnimation;
                     ano.setInterpolator(newAnticipateOvershootInterpolator(2.5f));
                     ano.addAnimation(newAlphaAnimation(1.0f, 0.0f));
                     ano.addAnimation(newTranslateAnimation(Animation.ABSOLUTE, 0.0f, 
                            Animation.ABSOLUTE,0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
                            Animation.RELATIVE_TO_SELF,-1.0f));
                     ano.setDuration(1000);
              }
       }

17.
显示一个浮动的窗口(任意View).
mWindowManager = (WindowManager)getSystemService(
              Context.WINDOW_SERVICE);
mDialog = LayoutInflater.from(mContext).inflate(
              R.layout.popup, null);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
              LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,
              (int)event.getX(),(int)event.getY(),
              WindowManager.LayoutParams.TYPE_APPLICATION,
              WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
              PixelFormat.TRANSLUCENT);
lp.gravity = Gravity.TOP | Gravity.LEFT;
mWindowManager.addView(mDialog, lp);
如果需要隐藏,则remove即可
mWindowManager.removeView(mDialog);

18.
设置应用程序全屏显示
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

19.
获取系统所有的安装程序
final PackageManager packageManager = getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> apps =packageManager.queryIntentActivities(mainIntent, 0);

20.
手机振动,代码片段。
Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(pattern, -1);
需要在AndroidManifest.xml文件添加权限
<uses-permission android:name="android.permission.VIBRATE" />

21.
设置开机运行程序,需要在AndroidManifest.xml中添加
<intent-filter>
<!-- 系统启动完成后会调用-->
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>

22.
简单的使用ListView的方法,
一,单行文字的
List<String> list = new ArrayList<String>();
lvData.setAdapter(new ArrayAdapter(this, 
              android.R.layout.simple_list_item_1,list));
二,双行文字,使用SimpleAdapter
List<HashMap<String, String>> list = newArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
map.put("ID", cursor.getString(0));
map.put("UserName", cursor.getString(1));
list.add(map);
lvData.setAdapter(new SimpleAdapter(this, list, 
       android.R.layout.simple_expandable_list_item_2, 
       newString[]{"ID","UserName"},
       new int[]{android.R.id.text1,android.R.id.text2}));

23.
SQLiteDatabase中模拟使用Truncate方法清空数据表跟计数器的方法
先使用"DELETE FROM TableName"语句清空数据表数据
再使用"UPDATE SQLITE_SEQUENCE SET SEQ=0 WHERENAME=\"TableName\""置0计数器
下面是清空表“Users”
try {
       mDatabase.execSQL("DELETE FROMUsers");
       mDatabase.execSQL("updatesqlite_sequence set seq=0 where name=\"Users\"");
} catch (SQLException se) {
       Toast.makeText(this,se.getMessage(), Toast.LENGTH_LONG).show();
       se.printStackTrace();
}

24.
使用ADB以可读写方式重新挂载根目录,可以读写sbin文件夹
./adb shell
su
mount -o remount,rw dev/block/mtdblock3 /

25.
android中通过代码实现文件权限修改
try {
       String command = "chmod 777" + destFile.getAbsolutePath();
       Log.i("zyl","command = " + command);
       Runtime runtime =Runtime.getRuntime(); 
       Process proc =runtime.exec(command);
} catch (IOException e) {
       Log.i("zyl","chmodfail!!!!");
       e.printStackTrace();
}

26.
Android 隐藏应用程序图标
把<categoryandroid:name="android.intent.category.LAUNCHER" />删除即可

27.
使用Tab分页内容。
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        TabHost mTabHost = this.getTabHost();
        
        Intent intent = new Intent(this,TabContent.class);
        intent.setAction(Intent.ACTION_VIEW);
        intent.putExtra("Yao.GUET", 0);
       mTabHost.addTab(mTabHost.newTabSpec("Tab_1")
                  .setIndicator("Tab1", 
                                getResources().getDrawable(R.drawable.icon))
                  .setContent(intent));
        
        Intent intent2 = new Intent(this,TabContent.class);
        intent2.setAction(Intent.ACTION_VIEW);
        intent2.putExtra("Yao.GUET", 1);
       mTabHost.addTab(mTabHost.newTabSpec("Tab_2")
                  .setIndicator("Tab2", 
                                getResources().getDrawable(R.drawable.icon))
                  .setContent(intent2));
        
        mTabHost.setCurrentTab(0);
    }

28.
设置透明背景,修改AndroidManifest.xml文件,在对应的Activity里面加上下面的属性:
android:theme="@android:style/Theme.Translucent"
使用系统背景作为应用的背景,在onCreate的时候添加窗口标志:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);

29.
播放系统铃声代码
       // play the notification sound...
       private voidplayNotifySound(Context context) {
              Uri Notify_Sound =RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
              MediaPlayer mMediaPlayer =new MediaPlayer();
              try {
                     mMediaPlayer.setDataSource(context,Notify_Sound);
                     final AudioManageraudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
                     if (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION)!= 0) {
                            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
                            mMediaPlayer.setLooping(false);
                            mMediaPlayer.prepare();
                            mMediaPlayer.start();
                     }
              } catch(IllegalArgumentException e) {
                     // TODOAuto-generated catch block
                     e.printStackTrace();
              } catch (SecurityExceptione) {
                     // TODOAuto-generated catch block
                     e.printStackTrace();
              } catch(IllegalStateException e) {
                     // TODOAuto-generated catch block
                     e.printStackTrace();
              } catch (IOException e) {
                     // TODOAuto-generated catch block
                     e.printStackTrace();
              }
       }

基于智能操作系统安卓的智能家居设计

2013-05-06  来源: 工控网(百站)

  工控摘要:此前,业界有提出基于智能手机的智能交通系统,当然这类方案只是整个智能交通系统当中一个组成部份,目前基于安卓系统的智能家居设计也已出炉了。
  
   一套基于Arduino的智能家居方案,不是仅仅一个功能,而是整套可以后续扩展和升级的智能家居系统,每个终端和中控都基于Arduino可以独立运 作,也可以组网变成一套系统工作,当然为了兼容性,也允许支持很多其他的现成的智能家居终端-如果他们提供了接口和协议的话。
  
  先看一下到目前为止我们完成的一小部分内容:
  
  1.将你需要互相控制灯光的每个房间,换上智能开关,配对后就能通过无线在一个房间对另一个房间的灯光进行控制和监视。简答的说,就是你只需要更换掉你卧室和厕所里的普通照明开关,就可以在卧室里看到厕所的灯是否关闭了,能通过卧室的面板来关闭厕所的灯光。
  
  2.智能开关可以被一个4按钮的遥控器控制,通过遥控器就可以在家里随意开关所有房间的照明-当然,还支持场景模式,复杂的强大功能后续再详细解释。
  
  3.智能插座则可以跟手机通过蓝牙连接,使用我们提供的手机软件,就可以监控到插座上电器的用电量等数据,可以通过手机来开关插座上的电器。现在最新版本的软件已经支持通过设置插座的开关时间来实现对电器的定时开关机。
  
  4.智能插座和智能开关也是可以组网配对的,这样通过墙上的智能开关按钮也可以开关其他房间任意位置的插座。
  
  5.通过智能中转盒,使用我们提供的手机软件,你可以自由添加/删除和控制各个房间的智能插座和智能开关。
  
   为了提高部署的灵活性和降低入门门槛,我们设计的每个智能终端部分都是可以互相独立工作的,这样你就可以根据自己的需要来选择相应的部分,而无需整个系统一起部署。比如:如果你只是想实现家里各房间的灯光互控,那么只需要购买替换智能开关就可以了;如果你只是需要一个插座来监视,遥控或者定时你的电器,那么只需要单独的智能插座就可以满足你的要求。然而这些零碎独立的部分,又是可以通过中控组成整套一体化的系统-甚至其中很多设备是支持脱离中控独立组网的。
  
  下面是每个组成部分的内容:
  
  智能开关

  
   Yeelight很酷很炫!但是,很多时候,我们对照明系统的需求只是开和关而已,调光甚至是调色的需求是比较小的,而且我们会更习惯是用手去触摸墙壁上的按钮而不是掏出甚至到处去找手机。虽然我们后续也会推出带调光的智能LED灯泡,但现在我们认为只要更换掉你墙壁上的传统开关,就已经能让你进入智能时代了。
  
  单火线供电方案,直接替换传统的墙壁开关就可以了,无需重新布线。需要任何其他外部设备,两个智能开关就可以实现无线组 网,让你通过一个房间的开关去控制另一个房间的灯光,还能同步显示另一个房间的灯光状态-不用担心厕所的灯是否关了,看下你卧室里的开关面板上对应的按钮 指示灯就知道了,如果开着,按一下就能远程把那边的灯给关了。
  
  如果使用遥控器,可以实现对所有智能开关的的遥控开关。大冬天在暖暖的被窝里不想起床去关灯?只要一按遥控器就可以了。
  
  因为篇幅关系,更多的关于这个开关的资料,可以点在这里了解。
  
  上面都是从发布到点名时间的文案里复制粘贴的。也许你会觉得这个跟我们说的都是基于Arduino的终端不一致,是的..因为它是单火线供电的方案,只有用低功耗的主控方案了,ATMega328在80uA的情况下真心不好使...
  
  不过也不是完全没关系,因为它的控制协议我们是开源的,我们还提供了一个Arduino的433RF控制库,你可以找个Arduino/iteaduino主板,然后接上433MRF模块,再然后调用我们的库,直接实现跟这个开关通讯~
  
  智能插座
  
  好吧这个就跟Arduino有点关系了,因为开源社区版的方案就是基于Arduino的。
  
   上面的智能开关我们是开了模具的,因为我们实在没办法在已有的成品开关里做我们的修改。智能插座我们还在设计自己的模具,不过好在市场上各类插座都有很大的内体空间,我们可以在这上面直接DIY加上控制板,让它智能化。现在我们选用了一款立式插座,只要植入我们的控制板,就变成一个智能插座。
  
  这插座的功能当然不仅仅是普通的一个分成多个的插排,而是可以分析记录接在上面的用电器的用电量等各种信息,并通过通断供电来实现对用电器的开关控制。
  
   我们提供了一款手机软件,通过蓝牙连接到智能插座上后,就可以在手机上看到电器的用电量,电流,电网电压,运行时间等信息了。智能插座能实现过压过流保护,通过手机软件,你可以随时开关上面的电器。还可以实现定时开关-现在不支持定时功能的电暖气等电器都可以实现定时开关机了。
  
  通过手机软件,可以让智能插座进入配对模式,然后就可以跟智能开关进行配对组网,配对之后,这个插座就可以被智能开关无线控制了。
  
   这个智能插座的硬件和软件将来都会开源公布出来,而且是基于Arduino的平台,只要你有想法有胆量,都可以试试自己DIY一个属于自己的定制新功 能!比如加上个温度传感器,过热就断开;比如加上个PIR,有人通过就开通一会~把你的想法实现后,也开源发布出来跟大家共享吧!
  
  是的很多功能可以改进比如我们是做50Hz的采样的,如果你在日本是60Hz,那么就自己改改定时器吧-当然,如果人愿意去做个自校准的版本出来,也不是难事:)
  
  智能中转盒
  
  通过智能中转盒和我们的手机软件,可以实现手机对全屋智能开关和智能插座的无线遥控控制。当然,它只是个中转盒,还不是个中控盒!后续我们会继续推出能上网的中控盒,这样就能实现在办公室对家里照明和用电器的监视跟控制了。
  
   这个中转盒也是基于Arduino的,但是只实现了从蓝牙到433MRF的中继,并没做实际中控功能进去。我们的计划是再推出一个2560+W5100 的以太网中控盒版本,这样只要连WIFI就可以控制,当然,我们的网络服务器搭建好后也能实现在户外能上网的地方家里进行监控了~服务器没搞定之 前,Yeelink是个好选择。

Android学习笔记-常用的一些源码,防止忘记了相关推荐

  1. Netty学习笔记(一)Netty客户端源码分析

    最近在学些BIO,NIO相关的知识,也学习了下Netty和它的源码,做个记录,方便以后继续学习,如果有错误的地方欢迎指正 如果不了解BIO,NIO这些基础知识,可以看下我的如下博客 IO中的阻塞.非阻 ...

  2. Laravel 学习笔记之 Query Builder 源码解析(下)

    说明:本文主要学习下Query Builder编译Fluent Api为SQL的细节和执行SQL的过程.实际上,上一篇聊到了\Illuminate\Database\Query\Builder这个非常 ...

  3. Shiro学习笔记(三)源码解析

    Shiro作为轻量级的权限框架,Shiro的认证流程是怎样的一个过程. 如果没有对Shiro进行了解的话,建议先对Shiro学习笔记(一)学习一下Shiro基本的组 成. 1,几大重要组件解析 1.1 ...

  4. [Java Path Finder][JPF学习笔记][4]将JPF源码导入Eclipse

    这篇日志很简单,考虑到有些师弟在学习JPF,这里总结些经验. 在Eclipse中新建"Java Project",在新建的Project的src图标上点击右键--"Imp ...

  5. 【Redis学习笔记】2018-05-30 Redis源码学习之Ziplist、Server

    作者:施洪宝 顺风车运营研发团队 一. 压缩列表 压缩列表是Redis的关键数据结构之一.目前已经有大量的相关资料,下面几个链接都已经对Ziplist进行了详细的介绍. http://origin.r ...

  6. ActiveMQ学习笔记(8)——导入ActiveMQ源码到Eclipse

    2019独角兽企业重金招聘Python工程师标准>>> 一.准备 Eclipse Luna 版本,本身已经支持Git和Maven. 安装了apache-maven,我使用的是3.1. ...

  7. php getid3,PHP getID3类的使用方法学习笔记【附getID3源码下载】

    本文实例讲述了PHP getID3类的使用方法.分享给大家供大家参考,具体如下: 网上描述: getID3()这个PHP脚本能够从MP3或其它媒体文件中提取有用的信息如:ID3标签,bitrate,播 ...

  8. Nginx学习笔记(五) 源码分析内存模块内存对齐

    Nginx源码分析&内存模块 今天总结了下C语言的内存分配问题,那么就看看Nginx的内存分配相关模型的具体实现.还有内存对齐的内容~~不懂的可以看看~~ src/os/unix/Ngx_al ...

  9. PyQt5学习笔记03----Qt Designer生成源码

    下面来分析一下Qt Designer生成的源码. Qt Designer制作的图形界面为 生成的代码如下 [python] view plaincopy from PyQt5 import QtCor ...

最新文章

  1. 你见过最狠的SCI评论是什么?
  2. 深入剖析Redis系列(七) - Redis数据结构之列表
  3. os-cocos2d游戏开发基础-进度条-开发笔记
  4. react 面试题 高级_高级前端面试题目大全(一)
  5. 视频监控技术 迎来网络“多媒体”时代
  6. Python操作Redis中的hash
  7. 公路多孔箱涵设计_【公路常识中篇】公路路基边坡滑坡防护设计和预防
  8. 支持向量机SVM的学习笔记
  9. hdu5347 MZL's chemistry(打表)
  10. 随机变量的均值与样本的平均值有何区别
  11. 如何设计一款IRR计算器
  12. js字符串转json, json转字符串
  13. JS、H5调用手机相册摄像头以及文件夹
  14. Django:A server error occurred. Please contact the administrator.
  15. 北理大编程作业:确定母亲节
  16. 用一个创业故事串起操作系统原理(五)
  17. 游戏攻略资料收集,制作技巧经验分享-游戏编辑2
  18. 一款不错的工具:aardio
  19. 广州成人大学哪个学校最好
  20. 42-Map集合遍历键找值方式-键值对对象Entry-键值对方式遍历

热门文章

  1. Parcel Bundle漏洞学习
  2. 腾讯云SCF Web函数 部署后使用异常
  3. 不要埋怨程序员频繁跳槽
  4. KAIZEN是什么?
  5. 优秀的计算机编程类博客 和 文章 转
  6. ie11浏览器可以下载java吗_IE11浏览器怎么下载?
  7. iCAN使用faster r-cnn得到目标检测结果文件为空
  8. html语言星号,html星号怎么打
  9. 华清远见-JAVA面向对象简单总结
  10. 【C语言入门】判断一个数的奇偶性