树莓派更换使用阿里云源方法

国内访问的话,树莓派官方源太慢,因此需要更换源来解决,源有很多,接下来介绍如何更换阿里云源 root 权限下编辑配置文件:sudo nano /etc/apt/sources.list 进入编辑页面注释原有内容加上deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib rpideb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib rpi更新软件索引 sudo apt-get update 比较索引清单更新依赖关系sudo apt-get upgrade -yNano 操作:Ctrl+O 保存 再按回车确认Ctrl+X 退出

树莓派开启 root 账户 更改 root 账户密码

树莓派 Raspbian 系统默认使用 pi 账户,密码为 raspberry,并锁定 root 账户,root 也无密码需自己设置密码。设置密码执行以下命令,输入密码即可 sudo passwd root 解锁 rootsudo passwd --unlock root切换用户 su - 用户名su 与 su - 区别:su 切换后仍是普通用户 shell 环境,su - 切换后为切换后用户的 shell 环境。su 英文 switch user 但 sudo 相当于使用管理员身份执行,因此 su 与 sudo 是有区别的

LayUI 前端渲染单选框多选框 value 取不到值解决方法

折腾了半天 最后发现原来是因为我的 name="isEntity"将 name 改成其他名称即可,最好不要用 is 这种别名

关于树莓派无屏幕 SSH 连接 蹭网如何获取的 IP 地址的多种方式

     树莓派没屏幕的话确实有着诸多不便,在没屏幕下不能手动连 WiFi,不能用命令查看树莓派本机 IP。这种情况下,可以如下几种解决方式。网络相关 蹭网连接前提      需保证树莓派连接上网络。在烧录系统后的内存卡中新建 SSH 为文件名的空文件(无后缀),以及wpa_supplicant.conf 文件,文件内容如下:ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1country=GB network={    ssid="WiFi-A"    psk="12345678"    key_mgmt=WPA-PSK    priority=1} network={    ssid="WiFi-B"    psk="12345678"    key_mgmt=WPA-PSK    priority=2    scan_ssid=1}无线网配置文件解释 #ssid: 网络的 ssid#psk: 密码#priority: 连接优先级,数字越大优先级越高(不可以是负数)#scan_ssid: 连接隐藏 WiFi 时需要指定该值为 1 配置好后内存卡插入树莓派,启动后会连接上你配置文件设置的无线网。不仅在烧制后可以这样配置无线网,在使用后也可这样配置,只是取出内存卡配置可能有点麻烦。总结还是有买屏幕好点,对个人而言,平时就用 ssh 连接屏幕的作用也大抵就是看个 IP 吧。SSH 登录 默认用户名 pi 密码 raspberry,可用 xshell、putty 等软件连接 查看 IP 的几种方式 SoftPerfect Network Scanner 电脑端连接同无线网,下载 SoftPerfect Network Scanner,安装好后打开,设置扫描 IP 段为 192.168.0.0 到 192.168.255.255,然后扫描就完事了,可将该无线网内所有机器 IP 都扫描出来,可以观察机器名称哪个是树莓派的。官网http://www.softperfect.com/products/networkscanner/Advanced IP Scanner 同样电脑端软件,用法同上,免费 推荐使用这款。比较适合有网线条件下使用,用网线连接树莓派与电脑。官网 https://www.advanced-ip-scanner.com/cn/ 或网盘下载:https://lanzoux.com/ibz0xfeIP Tools安卓端通过 USB 共享网络给树莓派,安装 IP Tools 扫描局域网 IP,但总有不灵光,建议使用第一种从电脑端获取。拓展 (Raspbian 系统)SSH 进入设置 进入 SSH,命令行输入如下命令按回车进入可视化设置页面,可根据喜好更改个人配置,例如语言分辨率之类 sudo raspi-config 安装中文字体库 (文泉驿开源字体) 最新系统可能集成了中文字体中文语言等,请根据实际需求安装 sudo apt-get install ttf-wqy-zenhei 安装中文输入法,输入法切换快捷键 ctrl+space(当然若是无界面的 Lite 系统无需关心这些)sudo apt-get install scim-pinyin设置键盘布局,建议改成 104 键 USsudo dpkg-reconfigure keyboard-configuration烧录 / 备份系统 使用软件 Win32 Disk Imager,如下图:烧录或恢复系统很简单:选择解压后的镜像(.img 格式),选择设备 Device(就是内存卡盘符),直接点 Write 写入即可。备份:电脑本地新建.img 后缀的空文件,同样选择该文件,选择设备,然后点 Read 读取即可,不要点写入否则系统可能会丢失。不同容量内存卡恢复问题:8G 内存卡上备份的系统恢复到 16G 内存卡上,其中 16G 中 8G 内存可能未被分配,这时可以连接电脑用 windows 的磁盘管理工具拓展分区,或者用 DiskGenius 调整主分区大小。树莓派自带调整功能:进入 raspi-config 命令行界面,依次选择“Advanced Options”->“Expand Filesystem”,按回车确定保存即可。查看储存命令:df -h树莓派开启 SSH/VNC如果是可视化系统并且有屏幕的话可以在系统菜单里开启,如果没的话如下:开启 SSH 前面已讲过就不介绍了,现在我们通过 SSH 进入 raspi-config 命令界面,选择“5 Interface Options”,在进入的菜单选项中可以开启 / 关闭 SSH 或 VNC。vnc 与 ssh 账号密码一致,PC 端下载地址:https://www.realvnc.com/en/connect/download/viewer/windows/树莓派设置静态 IP 固定 IP输入命令:sudo nano /etc/dhcpcd.conf删除前面多余的注释“#”,指定无线接口 wlan0,静态 IP,静态路由器网关 IP,手动自定义 DNS 等interface wlan0  # 指定接口static ip_address=192.168.1.141/24 #IP 根据需要更改,/24 的意思是子网掩码为  255.255.255.0static routers=192.168.1.1 # 网关static domain_name_servers=192.168.1.1 10.18.0.1 # DNS如果不是通过 wlan 连接就是 eth0 了interface eth0static ip_address=192.168.137.1/24static domain_name_servers=114.114.114.114援引:https://www.jianshu.com/p/bd918ef98a4d

关于树莓派无屏幕 SSH 连接 蹭网如何获取的 IP 地址的多种方式

JavaScript 全局修改代码修饰器 CSS 网站添加 prettify 代码高亮教程

  不同主题高亮不统一问题 本站由于之前曾用不同编辑器插件编辑文章,因此代码高亮区域的 CSS 都点不同,不同主题之间对 <pre> 标签的处理也都不一样,造成每个主题都有不同的代码高亮形式。之前我的解决方法是改插件的 CSS 实现 CSS 内容统一,但这样面临两个问题:操作麻烦 需要手动修改 CSS 源文件 破坏插件 CSS 当插件更新时会修改可能会被覆盖恢复     感叹之前想得太麻烦,其实很简单解决这个问题,首先引入相关 js、css 代码(没有可在商店下载):<link rel="stylesheet" type="text/css" href="/zb_users/plugin/FY_Prettify/prettify.css" />     <script src="/zb_users/plugin/FY_Prettify/prettify.js"></script>然后通过 js 遍历标签节点强制更改 pre 标签为指定样式:    <script type="application/javascript"> var tags= document.getElementsByTagName("pre"); for (let s of tags) {s.setAttribute("class","fy-prettyprint linenums"); } </script>最后将这段代码放在主题设置的统计代码中即可,即以下:代码高亮代码<link rel="stylesheet" type="text/css" href="/zb_users/plugin/FY_Prettify/prettify.css" />     <script src="/zb_users/plugin/FY_Prettify/prettify.js"></script><script type="application/JavaScript"> var tags= document.getElementsByTagName("pre"); for (let s of tags) {s.setAttribute("class","fy-prettyprint linenums"); } prettyPrint();</script>其中本站已在 prettify.js 中调用了 prettyPrint()方法,因此可以删除 prettyPrint()避免重复调用。但是鄙人发现调用后还是没效果,发现可能是 jq 版本造成的错误,原错误代码:/* 初始化 prettyPrint*/jQuery(window).load(function(){    jQuery("pre").addClass("prettyprint");     prettyPrint();})改成下列即可/* 初始化 prettyPrint*/$(window).on('load',function(){    jQuery("pre").addClass("prettyprint");     prettyPrint();})代码复制功能 代码复制引用相关 js 即可。Z-Blog 用户可在应用商店搜索“复制代码”<script src="/zb_users/plugin/copycode/clipboard.min.js"></script><script src="/zb_users/plugin/copycode/copycode.js" type="text/javascript" /></script>将如下代码放在网站任意共通页面中即可。文章页面编辑功能 给每篇文章页面添加编辑功能,很简单,在文章显示页的 PHP 主题模板文件中添加:<span>{if $user.ID>0}<i class="fi fi-edit"></i><a href="{$host}zb_system/cmd.php?act=ArticleEdt&id={$article.ID}" rel="nofollow">Edit &nbsp;</a>{/if}</span>当然最简单是将上述封装成 js 文件直接引用就行,可以省去修改 PHP 模板的困扰,也减少代码侵入:var tags = document.getElementsByTagName("pre");for (let s of tags) {s.setAttribute("class", "fy-prettyprint linenums");}function getCookie(cookieName) { var cookieValue = ""; if (document.cookie && document.cookie != '') {var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) {var cookie = cookies[i]; if (cookie.substring(0, cookieName.length + 2).trim() == cookieName.trim() + "=") {cookieValue = cookie.substring(cookieName.length + 2, cookie.length); break; } } } return cookieValue;}if (getCookie('username')) { var pathName = window.location.pathname; if (pathName.indexOf('post/') > -1) { var endNum = pathName.length - 5; var articleNo = pathName.substring(6, endNum); if (!$('.article-info .fr .edits').html()) { var editStr = '<span><i class="fi fi-edit"></i> <a href="/zb_system/cmd.php?act=ArticleEdt&id='+articleNo+'"rel="nofollow">Edit &nbsp;</a></span> '; $('.article-info .fr').prepend(editStr); } }}以上代码思路也很简单,判断当前 cookie 中是否有用户名字段,有就在页面指定位置添加编辑按钮,这里编辑按钮的 articleNo 是根据当前页面 Url 来的,你的页面伪静态策略可能不一样,因此根据实际需求修改吧,关于编辑框插入位置的 css 选择器也根据实际情况进行修改即可。

国产开源精品工具包 HuTool

简介:Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。Hutool 中的工具方法来自于每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool 是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的 bug。 官方文档:https://hutool.cn/docs/#/ 详细用法官方已经讲得很详尽了,在此就不再赘述了。 模块 介绍 hutool-aopJDK 动态代理封装,提供非 IOC 下的切面支持 hutool-bloomFilter 布隆过滤,提供一些 Hash 算法的布隆过滤 hutool-cache 简单缓存实现 hutool-core 核心,包括 Bean 操作、日期、各种 Util 等 hutool-cron 定时任务模块,提供类 Crontab 表达式的定时任务 hutool-crypto 加密解密模块,提供对称、非对称和摘要算法封装 hutool-dbJDBC 封装后的数据操作,基于 ActiveRecord 思想 hutool-dfa 基于 DFA 模型的多关键字查找 hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)hutool-http 基于 HttpUrlConnection 的 Http 客户端封装 hutool-log 自动识别日志实现的日志门面 hutool-script 脚本执行封装,例如 Javascripthutool-setting 功能更强大的 Setting 配置文件和 Properties 封装 hutool-system 系统参数调用封装(JVM 信息等)hutool-jsonJSON 实现 hutool-captcha 图片验证码实现 hutool-poi 针对 POI 中 Excel 的封装 hutool-socket 基于 Java 的 NIO 和 AIO 的 Socket 封装

国产精品开源框架 Nutz 及相官工具类简介

Nutz官网: http://nutzam.com 简介: Nutz 是国产的精品开源框架,它全无依赖,只以 1 兆多的身材,就可以实现 SSH 全部功能的 90% 以上。内容主要涵盖了:Ioc、Aop、MVC、Dao、Json 等 WEB 开发的方方面面。 因此它并非简简单单一个工具包,甚至可用它来做一个项目。相关工具类(其他内容请参见官网, 此处仅选其中几工具类)Http 类//get 方式请求Response resp = Http.get("http://www.baidu.com");    if (resp.isOK()) {        System.out.println(resp.getContent());    }//post 方式Map<String, Object> params = new HashMap<String, Object>();params.put("name", "root");params.put("pwd", "123456");int timeout = 60 * 1000; //  单位毫秒String apiRet = Http.post("http://api.xxx.com/login", params, timeout);System.out.println(apiRet);使用代理 定制 http Header、Cookie文件上传 设置请求超时时间… 更多内容可自行探索 org.nutz.http 包。Tasks 类Tasks.scheduleAtFixedRate(new Runnable(){    public void run()    {        System.out.println("task runing...");    }}, 10);Lang.quiteSleep(60 * 1000);在指定的延时之后开始以固定的频率来运行任务 在指定的时间点开始以固定的频率运行任务 两次任务间保持固定的时间间隔 返回 Future 做更高级的任务控制 返回定时任务线程池,可做更高级的应用 更多内容可自行探索 org.nutz.lang.Tasks 类Conf 加载PropertiesProxy property = new PropertiesProxy(“/conf/", “/db.properties”));String redisIp = property.get("redis.ip");Int redisPort = property.getInt("redis.port");SocketsSockets.localListenOneAndStop(9099, "reload", new SocketAction(){        @Override        public void run(SocketContext context) {            System.out.println(" 重新加载配置文件 ");            context.writeLine("success");        }    });现在你只需 telnet 172.0.0.1 9090 然后输入 reload,就能重新加载项目中的配置文件了。而且原生的,它支持客户端输入 “close|stop|bye|exit” 来结束服务端的本地监听。  上边只是演示了添加一个动作(SocketAction),其实可以向它放入多个 SocketAction 来实现各种命令操作。另高级的,服务器端还能支持接收 json 串,实现更多的参数传入。   更多内容可自行探索 org.nutz.lang.socket 包。NutMapNutMap map = new NutMap();map.put("name", "bushi");map.put("age", 63);map.put("sex", true);map.put("time", new Date());                  System.out.println(map.getString("name"));System.out.println(map.getInt("age"));System.out.println(map.getBoolean("sex"));System.out.println(map.getTime("time"));// 另外 addv 亦可添加支持链式NutMap nutMap = new NutMap();nutMap.put("1",1);nutMap.put("2","2");nutMap.addv("3",3).addv2("4",4);System.out.println(nutMap);// 输出  {1=1, 2=2, 3=3, 4=[4]}代码统计Nutz 中还隐藏了一个代码统计工具。它可以对程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行、空白行和导入行为多少等等。  项目快结束了,统计下项目中代码行数,可以满足下自己的虚荣心,同时也好向老板交差。  使用方法非常简单:File file = new File("E:/qinerg_github/nutz/src/");CodeStatisticsResult statisticsResult = Code.countingCode(file, "java", true, null);System.out.println(" 源码数:" + statisticsResult.getFileCount());System.out.println(" 总行数:" + statisticsResult.getTotalLines());System.out.println(" 代码行:" + statisticsResult.getNormalLines());System.out.println(" 注释行:" + statisticsResult.getCommentLines());System.out.println(" 导入行:" + statisticsResult.getImportLines());System.out.println(" 空白行:" + statisticsResult.getWhiteLines());参考来源: https://my.oschina.net/qinerg/blog/164278

Splashtop 让 iPad 成为 Windows10 电脑副屏幕 投屏拓展屏幕

所需软件:Splashtop_Wired_XDisplay_Agent(PC 端)XDisplay(在苹果商城搜索下载 蓝色图标)下载 URL:https://www.splashtop.com/wiredxdisplay使用:在 PC 端打开 Splashtop Wired XDisplay Agent 与在 iPad 上打开 XDisplay 运行,然后用数据线将 iPad 连电脑即可。点 Windows10 右下角按钮,选“投影”,选择合适投影方式即可。使用感受 比较方便不需要流量,无缝将电脑屏幕拓展到 iPad 上,只是 iPad 屏幕还是有点小,凑合吧。投影后的 iPad 屏幕支持触屏操作,但不支持按键操作。若需按键操作可下载同公司下的另一款软件:Splashtop(iPad 上下载),Splashtop Streamer(PC 上下载)下载 URL:https://www.splashtop.com/downloadstart?platform=auto安卓平板 / 手机下载 URL:https://a.app.qq.com/o/simple.jsp?pkgname=com.splashtop.xdisplay.wired.pro&g_f=undefined

Splashtop 让 iPad 成为 Windows10 电脑副屏幕 投屏拓展屏幕

MarkDown 编辑器真好用!!

MarkDown 编辑器,对程序员来说 贴代码炒鸡方便。推荐 Typora.下列带来 typora 官网介绍:可读可写 Typora 给您既是读者又是作家的无缝体验。 它删除了预览窗口,模式切换器,降价源代码的语法符号以及所有其他不必要的干扰。相反,它提供了真正的实时预览功能,可帮助您专注于内容本身。简单而强大,支持图片,标题,列表,表格,代码高亮,数学,图示,内联样式等等。并且支持更换主题与目录显示,文件树显示。 免打扰 无缝实时预览 所见即所得Typora 官网下载地址:https://www.typora.io/

MarkDown 编辑器真好用!!

Lamada 学习小记

Lamada函数式接口 概念:有且仅有一个抽象方法的接口 由于只有一个抽象方法 Lamada 才能顺利推导 @FunctionalInterface 放在该接口上强制检查接口是否只有一个抽象方法 否则保存 当然符合有且仅有一个抽象方法也不用加该注解 Lamada 示例 接口中 public abstract 可以省略@FunctionalInterfacepublic interface MyFunctionalInterface {    public abstract void myMethod(String s);}个人理解为调用接口时重写抽象方法 有返回值示例 - 定义接口@FunctionalInterfacepublic interface Sumable {    int sum(int a, int b);}定义处理方法private static void showSum(int x, int y, Sumable sumCalculator) {    System.out.println(sumCalculator.sum(x, y));}在 Main 方法中调用 showSum(10, 20, (m,n)->m + n); 不写处理方法直接写匿名内部类形式比较容易理解Sumable sumable = new Sumable() {    @Override    public int sum(int a, int b) {        return a + b;    }};System.out.println(sumable.sum(20, 30));后一种改成 Lamada 形式 Sumable sumable = (a, b) -> a + b;System.out.println(sumable.sum(20, 30)); 函数式编程 Lambda 延迟加载 性能浪费实例public class Demo01Logger{    private static void log(int level, String msg)    {        if (level == 1)        {            System.out.println(msg);        }    }    public static void main(String[] args)    {        String msgA = "Hello";        String msgB = "World";        String msgC = "Java";        log(1, msgA + msgB + msgC);    }}原因 调用方法时候优先拼接了字符串 无论条件是否符合都拼接了 解决 改 Lamada 形式 定义接口@FunctionalInterface public interface MessageBuilder { String buildMessage(); }改造方法public class Demo02LoggerLambda{    private static void log(int level, MessageBuilder builder)    {        if (level == 1)        {            System.out.println(builder.buildMessage());        }    }    public static void main(String[] args)    {        String msgA = "Hello";        String msgB = "World";        String msgC = "Java";        log(1, () ‐ > msgA + msgB + msgC );    }}类似:SLF4J 会在满足日志级别时进行字符串拼接 LOGGER.debug(" 变量{} 的取值为{}。", "os", "macOS")Lamada 作参数与返回值