【Netty】(3)—源码NioEventLoopGroup
一、概念NioEventLoopGroup对象可以理解为一个线程池,内部维护了一组线程,每个线程负责处理多个Channel上的事件,而一个Channel只对应于一个线程,这样可以回避多线程下的数据同步问题。我们先回顾下上篇博客的服务器代码 // 定义一对线程组 // 主线程组, 用于接受客户端的连接,但是不做任何处理,跟老板一样,不做事 EventLoop
利用docker快速搭建Spark集群
适用人群正在使用spark的开发者正在学习docker或者spark的开发者准备工作安装docker(可选)下载java和sparkwithhadoopSpark集群Spark运行时架构图SparkCluster(Spark集群).png如上图:Spark集群由以下两个部分组成集群管理器(Mesos,Yarn或者standaloneMode)工作节点(worker)如何docker化(本例使用St
Redis数据结构(选型)
redis数据结构StringString这应该是应用最广泛的了,简单的key-value类型。value不仅可以是String,也可以是数字。还可以享受Redis的定时持久化(可以选择RDB模式或者AOF模式),操作日志及Replication等功能。SetSet利用Redis提供的Set数据结构,可以存储一些集合性的数据。Redis非常人性化的为集合提供了求交集、并集、差集等操作。Set和St
MySQL常用30种SQL查询语句优化方法
1、应尽量避免在where子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。3、应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。如:selectidfromtwherenumisnull可以在num上设置默认值0,确保表中num列没有null
EditText显示光标
if (android.os.Build.VERSION.SDK_INT
/etc/profile和~/.bash_profile的区别与联系
/etc/profile为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效。当被修改时,必须重启才会生效。英文描述:”Systemwideenvironmentandstartupprograms,forloginsetup.”/etc/environment系统的环境变量,/etc/profile是所有用户的环境变量,前者与登录用户无关,后者与
jquery简要
$(this)选择当前元素jq的方法方法---jq方法是jq库中定义的可重用的代码。在jq和js中可以使用方法完成工作。可以把方法认为是一个动词,方法完成的就是web页面的动作。.append----将指定的内容插入到DOM中。内容将增加到调用这个方法的元素的最后。.remove---从DOM中删掉元素选择器$(this)选择当前元素$("div")选择页面上的所有div元素$("divp")选择
Android的listview使用之5,图片二次采样
虽然我们已经对listview进行了优化,但是我们加载高清大图的时候,还是会造成OOM异常,因为我们加载的图片过大,占用的内存过多,所以内存不够了就会造成异常,其实我们用不到那么高清的图片,所以我们可以对图片进行处理,减小所占的内存,这就是图片的二次采样下面看代码二次采样的工具类public class BitMapSampling { //参数为图片的字节数组 public sta
高仿网易新闻栏目动画效果
今天准备用RecyclerView来实现网易新闻Tabs的动态效果。点击下面的RecyclerView的item,会有一个view的移动的动画;动画完成以后,下面的RecyclerView会有一个item删除的动画,对应上面的RecyclerView有一个item增加的动画;然后拖动上面RecyclerView的item可以进行排序,左右滑动可以进行删除。 整体效果还是和网易新闻的Tabs很像,细
ListView 点击选中行文字颜色、背景变化
创建ListView的适配器ListViewAdapter继承BaseAdapter;在ListViewAdapter添加一个方法public void setSelectPosition(int position){ this.mPosition = position;}mPosition 在ListView的监听事件中传入。lvLists.setOnItemClickListener(n
【HTML5初探之通信API】跨域门槛不再高、数据推送不是梦
前言HTML5新增通信相关两个API,跨文档消息传输与WEBSocketsAPI,跨文档消息传输功能,可以在不同网页文档,不同端口(跨域情况下)进行消息传递。使用websocketsapi可以让客户端与服务器端通过socket端口传递数据,这样便可以使用数据推送技术。跨文档消息传输在之前我们若想跨域获取信息会花很多功夫,现在只要获取网页所在窗口对象实例变可以实现互相通信。首先要想从其他窗口接受发过
用gitalk给你的博客添加评论服务
一、前言不像hexo、jekyll等,为了学习,我的博客是用vue和nodejs搭建出来的。支持在线编辑和markdown渲染等功能。大家如果感兴趣可以看我的博客地址最近给自己的博客添加了评论服务,用到的评论服务是Gitalk,它是基于githubissue搭建出来的评论系统。废话不多说,接下来说说如何使用。二、必要的准备在Github创建一个用来存放评论的仓库当然你也可以直接用你博客所在的仓库,
JavaScript的变量声明提升
说变量声明提升之前,先抛出一个疑问:JavaScript是解释型语言,还是编译型语言?对于这个问题,几乎所有初学者都坚定不移的给了我答案:“JavaScript是解释型语言”,但是随着你对JavaScript的了解,会产生疑问,解释性语言怎么还会有变量提升。因此,说JavaScript是一个解释性语言其实并不准确,因为JavaScript代码刚好在执行前一瞬间,会被编译(具体解释需要很长篇幅,下次
用 Kotlin 开发 Android 项目是一种什么样的感受?
前言从初学Kotlin,到尝试性的写一点体验代码,再到实验性的做一些封装工作,到最后摸爬滚打着写了一个项目。不得不说过程中还是遇上了不少的问题,尽管有不少坑是源于我自己的选择,比如使用了anko布局放弃了xml,但是总体来说,这门语言带给我的惊喜是完全足以让我忽略路上的坎坷。这篇文章仅仅是想整理一下这一路走过来的一些感想和惊喜,随着我对Kotlin的学习和使用,会长期修改。正文1.有了空安全,再也
微博Motan初识
关于Motan的设计可以参考这篇手记:https://www.imooc.com/article/18750这里对源码进行简单的学习记录:1-从github上面下载下来后源码目录:2-入口我们从Motan本身提供的demo进行开始简单的学习首先启动服务类:com.weibo.motan.demo.server.MotanApiExportDemopublic static void main(St
Matlab.NET混合编程调用Figure窗体
阅读目录1.前言2.Matlab.NET混合编程概述 3.MatlabFigure控件的封装过程 本博客所有文章分类的总目录:【总目录】本博客博文总目录-实时更新 Matlab和C#混合编程文章目录 :【目录】Matlab和C#混合编程文章目录回到目录1.前言做Matlab.NET混合编程好几年了,虽然Matlab很多函数忘记得差不多了,但基本的东西还是能熟练使用。特别是在C#调
获取图片的宽度与高度
获取图片的宽度与高度,这种情形并非是在文件上传时获取,而是直接去读取图片文件来取得。可以在System.Drawing名称空间之下有一个Image类别,这个类别还有一个FromFile()方法,这样我们可以去读取图片了。.aspx.cs:ViewCode string file = "Koala.jpg"; //new一个Image实例,并读取图片 System.Dra
【干货】什么是手绘风格的次世代游戏制作
大家现在对于次世代游戏的已经很熟悉了,但是手绘风格的次世代又是什么鬼,这东西到底怎么做,很多不太了解的小伙伴应该还是有点蒙蒙的,今天就来说一说,这“手绘风格的次世代游戏”三维美术的制作。实例分析看一个实例,这个实例是通过PBR手法绘制的贴图。整体效果写实,但又不失风格化,材质明确,但又不是使用的真实素材。我整理了2018最新的0基础入门和进阶教程,无私分享,加次世代游戏建模学习qun:167-88
【大前端之前后分离02】前端模板嵌套问题
回顾接上文:【大前端之前后分离01】JS前端渲染VS服务器端渲染,我们探讨了为什么要做前后分离,以及前端渲染需要解决的问题,最后提出了自己的解决方案:前端代码编译形成两套代码:①前端发布版本 + ②服务器端脚本这个想法借鉴了fisplus的smarty模块化思维,以及reactJS编译运行的概念,上次初步论证了其可行性,也遗留了一些问题,其中比较关键的问题是:前端模块嵌套问题我们在一个模板中又有一
Alpine Docker 安装 bash
AlpineLinux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musllibc和BusyBox以减少系统的体积和运行时的资源消耗。AlpineLinux提供了自己的包管理工具:apk,我们可以通过https://pkgs.alpinelinux.org/packages查询包信息。AlpineDocker镜像继承了AlpineLinux发行版的这些优势,相比于