前端时间,老大一天到晚脖子痛,说是老了,不能比我们年轻人了...

其实我脖子也痛好吗!!!

就有做个软件的想法,于是产生了这个东西——StandUp。

一个非常简陋的小东西,不过也有值得学习的地方,是基于 WPF 的。

<Window x:Class="StandUp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:StandUp"mc:Ignorable="d"Title="MainWindow" Height="350" Width="525"><Grid><Label x:Name="labPointer" Content="Label" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/><Label x:Name="labRestPointer" Content="Label" HorizontalAlignment="Left" Margin="10,40,0,0" VerticalAlignment="Top"/><Label x:Name="labInfo" Content="请休息五分钟后再回来!" Margin="255,0,205,42" Foreground="White" FontWeight="Bold" VerticalAlignment="Bottom" Height="60" Width="500" BorderBrush="White" FontSize="24" RenderTransformOrigin="0.5,0.5"><Label.RenderTransform><TransformGroup><ScaleTransform/><SkewTransform/><RotateTransform/><TranslateTransform X="100"/></TransformGroup></Label.RenderTransform></Label></Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Microsoft.Win32;namespace StandUp
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{private DispatcherTimer timer;private DispatcherTimer restTimer;private const long timeToWork = 300;//(5分钟)private const long timeToStandUp = 3600;//(1小时)//private const long timeToWork = 300;//(1分钟)//private const long timeToStandUp = 30;//(5分钟)private long timeSpan = 0;private long momentTs = 0;private NotifyIcon notifyIcon;#region 禁用全局快捷键public static bool IsEnableHook;private struct KBDLLHOOKSTRUCT{public int vkCode;int scanCode;public int flags;int time;int dwExtraInfo;}private delegate int LowLevelKeyboardProcDelegate(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);[DllImport("user32.dll")]private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, IntPtr hMod, int dwThreadId);[DllImport("user32.dll")]private static extern bool UnhookWindowsHookEx(IntPtr hHook);[DllImport("user32.dll")]private static extern int CallNextHookEx(int hHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);[DllImport("kernel32.dll")]private static extern IntPtr GetModuleHandle(IntPtr path);private IntPtr hHook;LowLevelKeyboardProcDelegate hookProc; // prevent gcconst int WH_KEYBOARD_LL = 13;public enum Ekey{VK_LBUTTON = 0x01,//   Left mouse buttonVK_RBUTTON = 0x02,//  Right mouse buttonVK_CANCEL = 0x03,//  Control-break processingVK_MBUTTON = 0x04,//   Middle mouse button (three-button mouse)VK_XBUTTON1 = 0x05,//  X1 mouse buttonVK_XBUTTON2 = 0x06,//   X2 mouse buttonVK_BACK = 0x08,//   BACKSPACE keyVK_TAB = 0x09,//  TAB keyVK_CLEAR = 0x0C,//  CLEAR keyVK_RETURN = 0x0D,//   ENTER keyVK_SHIFT = 0x10,//    SHIFT keyVK_CONTROL = 0x11,//  CTRL keyVK_MENU = 0x12,//  ALT keyVK_PAUSE = 0x13,//  PAUSE keyVK_CAPITAL = 0x14,//  CAPS LOCK keyVK_KANA = 0x15,// IME Kana modeVK_HANGUEL = 0x15,//  IME Hanguel mode (maintained for compatibility; use VK_HANGUL)VK_HANGUL = 0x15,//  IME Hangul modeVK_JUNJA = 0x17,//  IME Junja modeVK_FINAL = 0x18,//   IME final modeVK_HANJA = 0x19,//   IME Hanja modeVK_KANJI = 0x19,//   IME Kanji modeVK_ESCAPE = 0x1B,//  ESC keyVK_CONVERT = 0x1C,//    IME convertVK_NONCONVERT = 0x1D,// IME nonconvertVK_ACCEPT = 0x1E,//  IME acceptVK_MODECHANGE = 0x1F,//  IME mode change requestVK_SPACE = 0x20,//  SPACEBARVK_PRIOR = 0x21,// PAGE UP keyVK_NEXT = 0x22,//   PAGE DOWN keyVK_END = 0x23,//  END keyVK_HOME = 0x24,//   HOME keyVK_LEFT = 0x25,//  LEFT ARROW keyVK_UP = 0x26,//  UP ARROW keyVK_RIGHT = 0x27,// RIGHT ARROW keyVK_DOWN = 0x28,//   DOWN ARROW keyVK_SELECT = 0x29,//  SELECT keyVK_PRINT = 0x2A,//   PRINT keyVK_EXECUTE = 0x2B,//  EXECUTE keyVK_SNAPSHOT = 0x2C,//   PRINT SCREEN keyVK_INSERT = 0x2D,//    INS keyVK_DELETE = 0x2E,// DEL keyVK_HELP = 0x2F,//   HELP keyN0 = 0x30,//   0 keyN1 = 0x31,//  1 keyN2 = 0x32,//  2 keyN3 = 0x33,//  3 keyN4 = 0x34,//  4 keyN5 = 0x35,//  5 keyN6 = 0x36,//  6 keyN7 = 0x37,//  7 keyN8 = 0x38,//  8 keyN9 = 0x39,//  9 keyA = 0x41,//   A keyB = 0x42,//   B keyC = 0x43,//   C keyD = 0x44,//   D keyE = 0x45,//   E keyF = 0x46,//   F keyG = 0x47,//   G keyH = 0x48,//   H keyI = 0x49,//   I keyJ = 0x4A,//   J keyK = 0x4B,//   K keyL = 0x4C,//   L keyM = 0x4D,//   M keyN = 0x4E,//   N keyO = 0x4F,//   O keyP = 0x50,//   P keyQ = 0x51,//   Q keyR = 0x52,//   R keyS = 0x53,//   S keyT = 0x54,//   T keyU = 0x55,//   U keyV = 0x56,//   V keyW = 0x57,//   W keyX = 0x58,//   X keyY = 0x59,//   Y keyZ = 0x5A,//   Z keyVK_LWIN = 0x5B,// Left Windows key (Natural keyboard)VK_RWIN = 0x5C,//   Right Windows key (Natural keyboard)VK_APPS = 0x5D,//  Applications key (Natural keyboard)VK_SLEEP = 0x5F,//  Computer Sleep keyVK_NUMPAD0 = 0x60,// Numeric keypad 0 keyVK_NUMPAD1 = 0x61,//   Numeric keypad 1 keyVK_NUMPAD2 = 0x62,//   Numeric keypad 2 keyVK_NUMPAD3 = 0x63,//   Numeric keypad 3 keyVK_NUMPAD4 = 0x64,//   Numeric keypad 4 keyVK_NUMPAD5 = 0x65,//   Numeric keypad 5 keyVK_NUMPAD6 = 0x66,//   Numeric keypad 6 keyVK_NUMPAD7 = 0x67,//   Numeric keypad 7 keyVK_NUMPAD8 = 0x68,//   Numeric keypad 8 keyVK_NUMPAD9 = 0x69,//   Numeric keypad 9 keyVK_MULTIPLY = 0x6A,//  Multiply keyVK_ADD = 0x6B,//   Add keyVK_SEPARATOR = 0x6C,//  Separator keyVK_SUBTRACT = 0x6D,// Subtract keyVK_DECIMAL = 0x6E,//   Decimal keyVK_DIVIDE = 0x6F,// Divide keyVK_F1 = 0x70,//  F1 keyVK_F2 = 0x71,//  F2 keyVK_F3 = 0x72,//  F3 keyVK_F4 = 0x73,//  F4 keyVK_F5 = 0x74,//  F5 keyVK_F6 = 0x75,//  F6 keyVK_F7 = 0x76,//  F7 keyVK_F8 = 0x77,//  F8 keyVK_F9 = 0x78,//  F9 keyVK_F10 = 0x79,// F10 keyVK_F11 = 0x7A,//    F11 keyVK_F12 = 0x7B,//    F12 keyVK_NUMLOCK = 0x90,//    NUM LOCK keyVK_SCROLL = 0x91,//    SCROLL LOCK keyVK_LSHIFT = 0xA0,// Left SHIFT keyVK_RSHIFT = 0xA1,//  Right SHIFT keyVK_LCONTROL = 0xA2,//   Left CONTROL keyVK_RCONTROL = 0xA3,//  Right CONTROL keyVK_LMENU = 0xA4,//    Left MENU keyVK_RMENU = 0xA5,//    Right MENU keyVK_BROWSER_BACK = 0xA6,//    Browser Back keyVK_BROWSER_FORWARD = 0xA7,//   Browser Forward keyVK_BROWSER_REFRESH = 0xA8,//    Browser Refresh keyVK_BROWSER_STOP = 0xA9,//   Browser Stop keyVK_BROWSER_SEARCH = 0xAA,//    Browser Search keyVK_BROWSER_FAVORITES = 0xAB,//   Browser Favorites keyVK_BROWSER_HOME = 0xAC,// Browser Start and Home keyVK_VOLUME_MUTE = 0xAD,// Volume Mute keyVK_VOLUME_DOWN = 0xAE,//    Volume Down keyVK_VOLUME_UP = 0xAF,//  Volume Up keyVK_MEDIA_NEXT_TRACK = 0xB0,// Next Track keyVK_MEDIA_PREV_TRACK = 0xB1,//    Previous Track keyVK_MEDIA_STOP = 0xB2,//  Stop Media keyVK_MEDIA_PLAY_PAUSE = 0xB3,//    Play/Pause Media keyVK_LAUNCH_MAIL = 0xB4,//   Start Mail keyVK_LAUNCH_MEDIA_SELECT = 0xB5,// Select Media keyVK_LAUNCH_APP1 = 0xB6,//   Start Application 1 keyVK_LAUNCH_APP2 = 0xB7,//    Start Application 2 keyVK_OEM_1 = 0xBA,//  Used for miscellaneous characters; it can vary by keyboard.VK_OEM_PLUS = 0xBB,//   For any country/region, the '+' keyVK_OEM_COMMA = 0xBC,//   For any country/region, the ',' keyVK_OEM_MINUS = 0xBD,//    For any country/region, the '-' keyVK_OEM_PERIOD = 0xBE,//   For any country/region, the '.' keyVK_OEM_2 = 0xBF,//    Used for miscellaneous characters; it can vary by keyboard.VK_OEM_3 = 0xC0,//  Used for miscellaneous characters; it can vary by keyboard.VK_OEM_4 = 0xDB,//  Used for miscellaneous characters; it can vary by keyboard.VK_OEM_5 = 0xDC,//  Used for miscellaneous characters; it can vary by keyboard.VK_OEM_6 = 0xDD,//  Used for miscellaneous characters; it can vary by keyboard.VK_OEM_7 = 0xDE,//  Used for miscellaneous characters; it can vary by keyboard.VK_OEM_8 = 0xDF,//  Used for miscellaneous characters; it can vary by keyboard.VK_OEM_102 = 0xE2,//    Either the angle bracket key or the backslash key on the RT 102-key keyboardVK_PROCESSKEY = 0XE5,//    IME PROCESS keyVK_PACKET = 0xE7,// Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key VK_ATTN = 0xF6,//    Attn keyVK_CRSEL = 0xF7,// CrSel keyVK_EXSEL = 0xF8,//    ExSel keyVK_EREOF = 0xF9,//    Erase EOF keyVK_PLAY = 0xFA,// Play keyVK_ZOOM = 0xFB,//  Zoom keyVK_NONAME = 0xFC,//    ReservedVK_PA1 = 0xFD,//   PA1 keyVK_OEM_CLEAR = 0xFE,//  Clear key}//protected override void OnExit(ExitEventArgs e)//{//    UnhookWindowsHookEx(hHook); // release keyboard hook//    base.OnExit(e);//}private static int LowLevelKeyboardProc(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam){if (nCode >= 0)switch (wParam){case 256: // WM_KEYDOWNcase 257: // WM_KEYUPcase 260: // WM_SYSKEYDOWNcase 261: // M_SYSKEYUPif ((lParam.vkCode == (int)Ekey.VK_SPACE && lParam.flags == 32) || // Alt+ space(lParam.vkCode == (int)Ekey.VK_TAB && lParam.flags == 32) || // Alt+Tab(lParam.vkCode == (int)Ekey.VK_ESCAPE && lParam.flags == 32) || // Alt+Esc(lParam.vkCode == (int)Ekey.VK_F4 && lParam.flags == 32) || // Alt+F4(lParam.vkCode == (int)Ekey.VK_ESCAPE && lParam.flags == 0) || // Ctrl+Esc(lParam.vkCode == 0x5b && lParam.flags == 1) || // Left Windows Key (lParam.vkCode == 0x5c && lParam.flags == 1))    // Right Windows Key {return 1;}break;}return CallNextHookEx(0, nCode, wParam, ref lParam);}#endregionpublic MainWindow(){InitializeComponent();// hook keyboardIntPtr hModule = GetModuleHandle(IntPtr.Zero);hookProc = new LowLevelKeyboardProcDelegate(LowLevelKeyboardProc);hHook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProc, hModule, 0);if (hHook == IntPtr.Zero)System.Windows.Forms.MessageBox.Show("不能设置快捷键:" + Marshal.GetLastWin32Error());elseIsEnableHook = true;ImageBrush b = new ImageBrush();b.ImageSource = new BitmapImage(new Uri("pack://application:,,,/images/bg.jpg", UriKind.RelativeOrAbsolute));//b.ImageSource = new BitmapImage(new Uri("pack://application:,,,../../bg.jpg", UriKind.RelativeOrAbsolute));b.Stretch = Stretch.Fill;this.Background = b;#region 图标显示在托盘this.notifyIcon = new NotifyIcon();this.notifyIcon.BalloonTipText = "Stand Up | ";this.notifyIcon.ShowBalloonTip(2000);this.notifyIcon.Text = "Stand Up | ";this.notifyIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(System.Windows.Forms.Application.ExecutablePath);this.notifyIcon.Visible = true;string startUpStr = GetRegRunState("StandUp") ? "取消自启动" : "自启动";System.Windows.Forms.MenuItem startUp = new System.Windows.Forms.MenuItem(startUpStr);startUp.Click += new EventHandler((o, e) =>{if (startUp.Text.Equals("自启动")){if (RegRun("StandUp", true))startUp.Text = "取消自启动";}else{if (RegRun("StandUp", false))startUp.Text = "自启动";}});System.Windows.Forms.MenuItem open = new System.Windows.Forms.MenuItem("打开");open.Click += new EventHandler(Show);System.Windows.Forms.MenuItem exit = new System.Windows.Forms.MenuItem("退出");exit.Click += new EventHandler(Close);//关联托盘控件System.Windows.Forms.MenuItem[] childen = new System.Windows.Forms.MenuItem[] { startUp, open, exit };notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(childen);this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler((o, e) =>{if (e.Button == MouseButtons.Left) this.Show(o, e);});#endregionShowInTaskbar = false;WindowState = WindowState.Maximized;WindowStyle = WindowStyle.None;labInfo.Content = "";Loaded += new RoutedEventHandler(RestTimeLoaded);Loaded += new RoutedEventHandler(TimerLoaded);}/// <summary>/// 工作计时/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void TimerLoaded(object sender, RoutedEventArgs e){timer = new DispatcherTimer();timer.Interval = TimeSpan.FromSeconds(1);timer.Tick += new EventHandler(TimerArrive);timer.Start();}/// <summary>/// 休息计时/// </summary>/// <param name="sender"></param>/// <param name="e"></param>void RestTimeLoaded(object sender, RoutedEventArgs e){restTimer = new DispatcherTimer();restTimer.Interval = TimeSpan.FromSeconds(1);restTimer.Tick += new EventHandler(RestTimerArrive);}/// <summary>/// 工作期间执行的时间/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void TimerArrive(object sender, EventArgs e){if (IsEnableHook){if (UnhookWindowsHookEx(hHook))IsEnableHook = false;elseIsEnableHook = true;}if (this.Visibility != Visibility.Hidden){ShowInTaskbar = false;momentTs++;if (momentTs >= 5)this.Hide();}string notiInfo = GetTime(true);this.notifyIcon.BalloonTipText = this.notifyIcon.Text = "Stand Up | " + notiInfo;labInfo.Content = notiInfo;timeSpan++;if (timeSpan == timeToStandUp){timeSpan = 0;timer.Stop();restTimer.Start();}}private string GetTime(bool getTimeToStandUp){string result = string.Empty;if (getTimeToStandUp){long ts = timeToStandUp - timeSpan;string clockStr = string.Format("{0} 小时 {1} 分钟 {2} 秒", ts / 3600, (ts % 3600) / 60, (ts % 3600) % 60);result = string.Format("您还可以工作:{0}", clockStr);}else{long ts = timeToWork - timeSpan;string clockStr = string.Format("{0} 分钟 {1} 秒", ts / 60, ts % 60);result = string.Format("您还可以休息:{0}", clockStr);}return result;}/// <summary>/// 休息/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void RestTimerArrive(object sender, EventArgs e){if (!IsEnableHook){hHook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProc, GetModuleHandle(IntPtr.Zero), 0);if (hHook == IntPtr.Zero){IsEnableHook = false;System.Windows.Forms.MessageBox.Show("不能设置快捷键:" + Marshal.GetLastWin32Error());}elseIsEnableHook = true;}momentTs = 0;if (this.Visibility != Visibility.Visible)this.Show();labInfo.Content = GetTime(false);timeSpan++;if (timeSpan == timeToWork){timeSpan = 0;restTimer.Stop();timer.Start();}}private void Show(object sender, EventArgs e){momentTs = 0;this.Visibility = System.Windows.Visibility.Visible;this.ShowInTaskbar = true;this.Activate();}private void Hide(object sender, EventArgs e){this.ShowInTaskbar = false;this.Visibility = System.Windows.Visibility.Hidden;}private void Close(object sender, EventArgs e){bool result = UnhookWindowsHookEx(hHook);System.Windows.Application.Current.Shutdown();}/// <summary>/// 自启动/// </summary>/// <param name="appName"></param>/// <param name="f"></param>bool RegRun(string appName, bool f){RegistryKey HKCU = Registry.CurrentUser;RegistryKey Run = HKCU.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);bool b = false;foreach (string i in Run.GetValueNames()){if (i == appName){b = true;break;}}try{if (f)Run.SetValue(appName, System.Windows.Forms.Application.ExecutablePath);elseRun.DeleteValue(appName);}catch{return false;}HKCU.Close();return true;}/// <summary>/// 获取当前是否开机启动/// </summary>/// <param name="appName"></param>/// <returns></returns>bool GetRegRunState(string appName){bool result = false;RegistryKey HKCU = Registry.CurrentUser;RegistryKey Run = HKCU.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);try{if (Run.GetValue(appName) != null)result = true;}catch{return result; ;}HKCU.Close();return result;}}
}

虽然是找资料东平西凑做出来的,不过也算是灵活应变嘛!嘿嘿!

对了,这里面加入了开机自启和休息时间屏蔽快捷键的功能.

不过屏蔽快捷键的功能做的不是特别好,ctrl + alt + del 可以打开任务管理器...这个不知道怎么解决...

StandUp 定时休息软件相关推荐

  1. iRelax for Mac(定时休息提醒工具)

    iRelax for Mac可以定时休息提醒,放松一下,伸伸懒腰,喝杯水走动走动.又可以提高工作的效率和专注力还能保持健康的身体. iRelax for Mac软件介绍 iRelax 辅助你在繁忙的工 ...

  2. 定时提醒软件有哪些 定时提醒便签推荐

    随着社会发展节奏越来越快,人们的日程事物也越来越多.一款优秀的定时提醒软件不但可以帮助你合理安排工作.处理紧急事件,还能规划休息时间,让大脑劳逸结合保持精力和创造力. 敬业签的提醒功能非常多样化,除了 ...

  3. 早衰真可怕,有Python你可不用怕,学了定时休息

    2019年11月27日在<追我吧>第九期节目的录制过程中,当期参与嘉宾高以翔奔跑时突然减速倒地,节目现场医护人员第一时间展开救治,并紧急将其送往医院.经过两个多小时的全力抢救,医院最终宣布 ...

  4. 批处理+定时任务实现定时休息提醒

    前言:俗话说的好,懒是第一生产力,懒是提高生产效率的必要条件.而现今windows是大部分人的第一生产工具,批处理+定时任务这对黄金搭档就是提升生产效率的第一工具.大家在生产过程中经常会遇到各种周期性 ...

  5. python定时器 循环_Python3 循环定时休息并播放音乐 (Windows)

    功能:工作一段时间(40 min),自动定时休息(10 min)并播放音乐,如此循环 文件名:EyeTimer.pyw,直接双击运行 关闭方法:在任务管理器里结束 Python 进程 #coding= ...

  6. xp定时关机软件_好用又免费的电脑定时工具,不用得后悔

    现在利用电脑办公的人有多少,举个手示意下!!! 给电脑设置定时关机,可以方便我们不在电脑前完成关机操作. 那么,如何设置定时关机呢?如果要取消,定时关机又如何取消? 有的人可能觉得定时关机根本用不到, ...

  7. 米拓建站系统(MetInfo CMS)文章定时发布软件

    简介: 米拓建站系统(MetInfo CMS)文章定时发布软件是一个网友根据自己需求写的文章发布辅助工具,能够帮助用户定时自动发布文章,这样就不用每天手动发文章啦,只需简单的操作就能轻松发布多篇文章, ...

  8. 定时重启软件_办公电脑怎样设置定时重启?依靠这款工具即可轻松实现

    在平时的工作办公过程当中,电脑是我们进行工作展开的标配,很多事情都需要通过电脑来进行完成,而像平板或手机,可能无法实现电脑上的一些功能,哪怕是最基本的功能,所以电脑是工作过程中的重要工具. 而我们平时 ...

  9. 卓越电脑定时关机软件

    卓越电脑定时关机软件是一款操作简便,功能强大,绿色,无任何插件的电脑自动定时关机软件,是家长,公司文员和电脑办公管理人员的好助手. 卓越电脑定时关机软件主要功能: 1.可设置电脑定时关机,定时重启,定 ...

  10. 定时启动软件的脚本。同时也适用于定时打开游戏。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.脚本简介 二.脚本内容 三.脚本自启动 总结 一.脚本简介 每天上班族上班第一件事就是登录各种办公软件,今天給大家带来了 ...

最新文章

  1. Linux系统命令常用查询
  2. 谷歌联合创始人:AI发展速度让我吃惊,但未来难料
  3. 上海首次正式试用人脸识别系统抓医药代表:频繁出入的非就医可疑人员
  4. 移动端适配--flexible.js
  5. 应用程序自动更新组件GeneralUpdate3.2.1发布
  6. 谷歌员工中位数年薪达 170 万元,却仍买不起房!
  7. python基础教程慕课_Python基础教程(6)--抽象
  8. 系统批量运维管理器Fabric详解
  9. CF1139D Steps to One
  10. mac 安装adb工具
  11. 12306 官网硬卧下铺的选择(亲测可用)
  12. php 变量加的作用是什么,php变量的定义和作用是什么 - php完全自学手册 - php中文网手册...
  13. C语言-Switch 语句
  14. 程序员如何提升英语水平
  15. 结束 oracle 锁 ps -ef|grepp.spid,oracle 解锁表剔除去session 和kill
  16. ajax调用ajax_AJAX即将到来
  17. 小程序免官费注册和突破实名只能绑定5个小程序的限制
  18. 今日份安利:手机上怎么去图片水印
  19. macbook无法打开移动硬盘 为什么mac上显示不了移动硬盘
  20. DaaS架构及落地 (一)

热门文章

  1. 全国车辆限行查询api 全国限行限号数据服务
  2. Springboot封装的好的发送post请求的工具类
  3. ps2023最新调色滤镜插件exposure图片后期处理工具
  4. LabVIEW FPGA PCIe开发讲解-实战篇:实验61:PCIe DMA+8位ADC(模拟数据采集卡)
  5. 逻辑真题- 19/20年逻辑真题名师讲评 主讲人:王诚
  6. TCP协议-TCP粘包问题
  7. matlab 求矩阵各行的平均值
  8. Redis 的过期策略都有哪些?
  9. Blake2b算法 php,Blake2b算法是什么?Blake2b算法币种盘点
  10. 常见分布及其概率分布图