- MyMvvmMaster:Android应用开发的MVVM架构解决方案
不胖的羊
本文还有配套的精品资源,点击获取简介:MyMvvmMaster.zip是一个集成MVVM架构、RxJava2、Retrofit和ARouter的Android应用框架压缩包,旨在简化开发流程,增强代码的可读性和可维护性。本框架通过DataBinding库实现数据和UI的双向绑定,利用RxJava2优化异步编程,Retrofit简化网络请求处理,ARouter管理模块间路由,从而提供一个高效、模块化
- Linux——网络(tcp)
爱吃喵的鲤鱼
linux运维服务器
文章目录目录文章目录前言一、TCP逻辑1.面向连接三次握手(建立连接)四次挥手(关闭连接)2.可靠性3.流量控制4.拥塞控制5.基于字节流6.全双工通信7.状态机8.TCP头部结构9.TCP的应用场景二、编写tcp代码函数1.Socket创建与配置socket()setsockopt()2.绑定与监听bind()listen()3.连接与接受连接connect()accept()4.数据发送与接收
- Linux下BIND安装与配置详解:正向解析、反向解析、主从域名服务器的搭建
shyuu_
服务器运维linux云计算网络
文章目录案例:BIND安装与配置详解一、安装BIND软件包二、配置BIND主服务器(正向解析)三、配置反向解析四、配置主从DNS服务器及自动同步案例:BIND安装与配置详解一、安装BIND软件包安装BIND软件包通过网络源或挂载的光盘安装BIND:yuminstallbind-y或者通过RPM包安装,前提是挂载系统盘ISO镜像:rpm-ivhbind-x.x.x-x.el7.x86_64.rpm查
- Java实现在线聊天_java实现聊天功能
简介_vN
javacocoa开发语言
资源绑定是指把业务相关的数据和Tcp连接(即ChannelContext)关联起来,譬如ChannelContext-A代表了用户张三,张三的userid是333Tio.bindUser(ChannelContext-A,"333")t-io目前内置了4种资源绑定,譬如给group加前缀"ios-",从而标记这个用户使用的是iosTio.bindGroup(ChannelContext-A,"33
- element-plus select 滚动加载更多
日积一沙
javascript
思路:监听select下拉面板的滚动事件,滚动到底部时,调用接口加载更多数据一、自定义指令importtype{Directive,DirectiveBinding}from"vue";interfaceElTypeextendsHTMLElement{copyData:string|number;__handleClick__:any;}constloadmore:Directive={moun
- Vue2 和 Vue3 自定义指令比较
风继续吹..
前端基础Vuevue.jsjavascript前端
Vue3官网-自定义指令Vue2官网-自定义指令在Vue2和Vue3中,自定义指令可以通过全局注册和局部注册来创建。一.钩子函数比较1.Vue2钩子函数bind:只调用一次,指令第一次绑定到元素时调用inserted:被绑定元素插入父节点时调用(仅保证父节点存在,但不一定已被插入文档中)。update:所在组件的VNode更新时调用componentUpdated:指令所在组件的VNode及其子V
- vue高级组件封装 element组件二次封装
沉迷...
vue3vue.jsjavascriptelementui
vue高级组件封装element组件二次封装相关解读使用defineOptions定义组件名称使用useSlots获取插槽获取父组件传递过来的dialog组件的插槽通过循环直接通过动态插槽插入el-dialog组件中使用defineExpose暴露组件方法父组件可通过ref直接调用使用v-bind="$attrs"绑定父组件传递的属性使用v-bind="slotProps"绑定插槽属性经过这些处理
- Android Automotive架构与流程:VehicleHAL,CarService,CarAPI,EVS
m0_61499908
android架构
允许拥有权限的应用访问(通过汽车服务)无需任何权限即可访问(通过汽车服务)仅允许部分系统组件直接访问车辆属性,而车辆网络服务是把关程序。大多数应用需通过汽车服务的额外把关(例如,只有系统应用可以控制HVAC,因为这需要仅授予系统应用的系统权限)。常用汽车权限(前缀:android.car.permission.):●[系统权限]ADJUST_CAR_CABIN操作轿厢信息●[系统签名]BIND_I
- Spring boot框架下的RabbitMQ消息中间件
阿乾之铭
消息队列java-rabbitmqrabbitmqjava
1.RabbitMQ基础概念1.1消息处理流程与组件配合Producer(生产者)发送消息。消息先发送到Exchange(交换机),而不是直接到队列。Exchange(交换机)接收到消息后,根据RoutingKey(路由键)和Binding(绑定规则),决定将消息发送到哪些Queue(队列)。Queue(队列)存储消息,等待Consumer(消费者)消费。Consumer(消费者)从队列中接收并处
- Android Studio:视图绑定的岁月变迁(2/100)
剑客狼心
android视图绑定
一、博文导读本文是基于AndroidStudio真实项目,通过解析源码了解真实应用场景,写文的视角和读者是同步的,想到看到写到,没有上帝视角。前期回顾,本文是第二期。privateUnbindermUnbinder;只是声明了一个接口类型的变量,并没有直接实例化。二、Unbinder接口这个Unbinder接口通常出现在基于依赖注入框架的Android开发中,例如ButterKnife,用于解绑视
- 【this arguments 对象 apply() 方法 bind() 方法 call()】
睡不着的可乐
javascript开发语言ecmascript
thisarguments对象apply()方法bind()方法call()JavaScript的this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。this的指向除去不常用的with和eval的情况,具体到实际应用中,this的指向大致可以分为以下4种。作为对象的方法调用作为普通函数调用构造器调用Function.prototype.cal
- vue路由history模式springBoot/Nginx配置
yzhSWJ
java前端servlet
精确配置路由在配置路由时,要确保数据接口的路由配置在这个宽泛规则之前,并且路由规则尽量精确。比如:importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassApiCont
- 测试驱动开发TDD
Urf_read
前后端&数据库交互通信springtddjavaspringspringbootjava-ee
如何在后端测试代码,测试一个其前端的请求,能否正常处理以登录请求为例packagecom.example.demo.login;importcom.example.demo.login.pojo.User;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.junit.jupiter.api.Test;importorg.spri
- 【OpenGauss源码学习 —— (VecSortAgg)】
J.Kuchiki
OpenGausspostgresqlgaussdb数据库
VecSortAgg概述SortAggRunner::SortAggRunner函数SortAggRunner::init_phase函数SortAggRunner::init_indexForApFun函数SortAggRunner::set_key函数BaseAggRunner::initialize_sortstate函数SortAggRunner::BindingFp函数SortAggRu
- [ Spring ] Spring Cloud Alibaba Message Stream Binder for RocketMQ 2025
ByteFlys
javaspring-cloudstarter-streammessage-binderrocketmqkafakakotlin
文章目录IntroduceProjectStructureDeclarePluginsandModulesApplyPluginsandAddDependenciesSenderPropertiesSenderApplicationSenderControllerReceiverPropertiesReceiverApplicationReceiverMessageHandlerCongratul
- 微信小程序picker表单选择器的使用
yueyecheshou1980
微信小程序微信小程序javascript小程序
微信小程序picker表单选择器的使用微信小程序picker表单选择器的使用bindchange:当选择项改变时触发的方法range:选项数组可以是二维数组range-key:如果是二维数组时,用此属性指定第二维数组的键以达到在选择项中显示这个键对应的键值value:是当前值是当前选中的数组的索引,是第一维数组的键,当改变选项后js会吧这个值改为用户所选择的项目第一维数组的键,注意picker只是
- C++函数作为参数
青瓜先生
C++入门例子c++函数
C++函数作为参数在C++中,函数作为另一个函数的参数是非常常见的做法,特别是在处理回调函数和泛型编程时。我们展示了如何在C++中将函数作为参数传递给另一个函数,包括普通函数、std::function和std::bind、lambda表达式以及类成员函数。每种方法都有其独特的优势,可以根据具体需求选择合适的实现方式。以下是几个详细的示例,展示如何将函数作为参数传递给另一个函数示例1:普通函数作为
- c++11_14学习之函数对象包装器function与bind
wyw0000
c++c++学习算法
文章目录1.可调用对象1.1函数指针1.2函数对象1.3可被转换为函数指针的类对象1.4类成员函数指针2.std::function2.1包装普通函数2.2包装函数指针2.3包装函数对象2.4包装可被转换为函数指针的类对象2.5包装类的静态成员函数2.6包装类的非静态成员函数3.std::bind()3.1绑定普通函数3.2placeholders占位符3.4绑定类的成员函数4.std::bind
- Element table 表头吸顶效果(适用于表头无fixed属性使用)
阳光的男夹克
Vue2javascript开发语言ecmascript
在main.js自定义sticky指令Vue.directive('sticky',{//当被绑定的元素插入到DOM中时……inserted(el,binding){//获取表格constthead=el.children[1]consttbody=el.children[2]//获取滚动元素constscrollParent=document.querySelector(binding.valu
- Carla 启动报错:Exception thrown: bind: Address already in use Signal 11 caught.
睡不醒的小泽
服务器运维
./CarlaUE4.sh-prefernvidia4.24.3-0+++UE4+Release-4.245180Disablingcoredumps.LowLevelFatalError[File:Unknown][Line:102]Exceptionthrown:bind:AddressalreadyinuseSignal11caught.MallocSize=65538LargeMemory
- Vue指令可拖动元素,兼容PC和移动端
warmbook
笔记
Vue.directive('movable',{bind(el){letagent=window.navigator.userAgent.toLowerCase(),start,move,end//判断当前是移动端还是PC,移动端监听touch,PC监听mouseif(["android","iphone","symbianos","windowsphone","ipad","ipod"].so
- OpenGL ES 05 纹理单元和采样器是怎么对应上的
陈皮话梅糖@
OpenGLES连载前端javascript人工智能
激活纹理单元//激活0号纹理单元,把rawData纹理数据绑定到0号纹理单元glActiveTexture(GLenum(GL_TEXTURE0))glBindTexture(GLenum(GL_TEXTURE_2D),texture)glTexImage2D(GLenum(GL_TEXTURE_2D),0,GL_RGBA,GLsizei(width),GLsizei(height),0,GLen
- Linux将目录挂载到另一个目录,类似软硬链接,并通过fstab实现
坐公交也用券
DebianLinuxlinuxjavaeureka
格式nonebind00例如/data/var/lib/docker/var/lib/dockernonebind00参数使用制表符tab间隔效果root@Debian12:~#cat/etc/fstab|grep-v^#/dev/mapper/Debian12--vg-root/ext4errors=remount-ro01UUID=998bd16c-3e36-4ea5-9354-5e92e16
- Android Service 启动流程
&岁月不待人&
Android新认知android
在早些年学习Android的时候,对Service有过总结,但是主要是如何去使用,注意事项,startService和bindService的区别。AndroidService_publicintonstartcommand(intentintent,intflags-CSDN博客但是今天从源码来总结下framework层的启动流程大致是什么样的。一、startService()平时,在我们的ac
- Android深入浅出之Binder机制
Fifi_0617
系统服务androidbinder机制
Binder于底层实现,是用的共享内存。实现了一个叫binder驱动的东西,这个binder驱动维护了一映射机制,其实就是一个hash表,用来将各个binder与相对应的进程和相关的线程信息维护起来。简单的来说,就是通过一个handle找到对应的binder,从而建立对应的进程间的联系。handle在这里就是类似ip的一个东西,用来找到通讯的对象的。其实从上层的角度来看,我们不需要去关注binde
- deepin 下如何实现一个文件即可读写又可只读
deepin
在Linux系统的运维过程中,我们常常会遇到需要对文件或目录进行灵活权限管理的场景。例如,某个应用的存储目录空间不足,或者需要为开发人员提供只读访问权限,同时又不影响原有配置文件的写入权限。本文将介绍如何通过mount--bind和相关选项来实现这些需求。问题背景在实际工作中,我们可能会遇到以下场景:应用程序的存储目录空间不足,但无法直接扩容。需要为开发人员提供配置文件的只读权限,同时保留原有文件
- 大三学生面试经历(2)
无限大.
面试面试职场和发展
继续昨天的内容,我面试的是一个Java实习岗,但是居然也问了我前端(vue)相关的问题最大的感觉就是,现在真的越来越卷了,后端都把前端的东西卷完了,当时是线上面试,感觉答的不太好(因为确实没准备的太全),接下来的时间继续加强加强这些方面的学习愿与诸君共勉!具体如下1.请简述Vue.js的生命周期函数及其执行顺序2.Vue.js中的v-bind指令和v-model指令有什么区别?3.请简述Vue.j
- Tkinter 事件处理
HG。
pythonGUI笔记
事件处理一个GUI应用整个生命周期都处在一个消息循环(eventloop)中。它等待事件的发生,并作出相应的处理。Tkinter提供了用以处理相关事件的机制处理函数可被绑定给各个控件的各种事件。widget.bind(event,handler)如果相关事件发生,handler函数会被触发,事件对象event会传递给handler函数1.鼠标和键盘事件事件说明鼠标光标进入控件时触发鼠标光标离开控件
- WebService——SOAP详解
m0_74825108
java
目录SOAP1、概述2、语法2.1、组成部分2.2、语法规则2.3、基本结构3、Envelope元素3.1、xmlns:soap命名空间3.2、encodingStyle属性4、Header元素4.1、mustUnderstand属性4.2、actor属性4.3、encodingStyle属性5、Body元素6、Fault元素7、SOAPHTTPBinding7.1、Content-Type7.2
- vue2和vue3组件传值——父传子
MvemiZ
javascriptvue.js前端经验分享笔记
****近期学习vue3的组件传值,发现和之前的vue2版本并没有什么区别,实现的思路都是一样的,文章底部我会用大白话叙述一下vue组件传值的思路过程。下面就一起学习vue的组件传值吧,不足之处大家多批评指正!**vue2-父传子//父组件中通过v-bind绑定了list这个自定义的属性,并赋了一个值dateimportSonViewfrom'@/components/SonView.vue';e
- ASM系列六 利用TreeApi 添加和移除类成员
lijingyao8206
jvm动态代理ASM字节码技术TreeAPI
同生成的做法一样,添加和移除类成员只要去修改fields和methods中的元素即可。这里我们拿一个简单的类做例子,下面这个Task类,我们来移除isNeedRemove方法,并且添加一个int 类型的addedField属性。
package asm.core;
/**
* Created by yunshen.ljy on 2015/6/
- Springmvc-权限设计
bee1314
springWebjsp
万丈高楼平地起。
权限管理对于管理系统而言已经是标配中的标配了吧,对于我等俗人更是不能免俗。同时就目前的项目状况而言,我们还不需要那么高大上的开源的解决方案,如Spring Security,Shiro。小伙伴一致决定我们还是从基本的功能迭代起来吧。
目标:
1.实现权限的管理(CRUD)
2.实现部门管理 (CRUD)
3.实现人员的管理 (CRUD)
4.实现部门和权限
- 算法竞赛入门经典(第二版)第2章习题
CrazyMizzz
c算法
2.4.1 输出技巧
#include <stdio.h>
int
main()
{
int i, n;
scanf("%d", &n);
for (i = 1; i <= n; i++)
printf("%d\n", i);
return 0;
}
习题2-2 水仙花数(daffodil
- struts2中jsp自动跳转到Action
麦田的设计者
jspwebxmlstruts2自动跳转
1、在struts2的开发中,经常需要用户点击网页后就直接跳转到一个Action,执行Action里面的方法,利用mvc分层思想执行相应操作在界面上得到动态数据。毕竟用户不可能在地址栏里输入一个Action(不是专业人士)
2、<jsp:forward page="xxx.action" /> ,这个标签可以实现跳转,page的路径是相对地址,不同与jsp和j
- php 操作webservice实例
IT独行者
PHPwebservice
首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端与client端。我测试的环境为:apache2.2.11 php5.2.10做这个测试之前,要确认你的php配置文件中已经将soap扩展打开,即extension=php_soap.dll;
OK 现在我们来体验webservice
//server端 serve
- Windows下使用Vagrant安装linux系统
_wy_
windowsvagrant
准备工作:
下载安装 VirtualBox :https://www.virtualbox.org/
下载安装 Vagrant :http://www.vagrantup.com/
下载需要使用的 box :
官方提供的范例:http://files.vagrantup.com/precise32.box
还可以在 http://www.vagrantbox.es/
- 更改linux的文件拥有者及用户组(chown和chgrp)
无量
clinuxchgrpchown
本文(转)
http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/
http://ydlmlh.iteye.com/blog/1435157
一、基本使用:
使用chown命令可以修改文件或目录所属的用户:
命令
- linux下抓包工具
矮蛋蛋
linux
原文地址:
http://blog.chinaunix.net/uid-23670869-id-2610683.html
tcpdump -nn -vv -X udp port 8888
上面命令是抓取udp包、端口为8888
netstat -tln 命令是用来查看linux的端口使用情况
13 . 列出所有的网络连接
lsof -i
14. 列出所有tcp 网络连接信息
l
- 我觉得mybatis是垃圾!:“每一个用mybatis的男纸,你伤不起”
alafqq
mybatis
最近看了
每一个用mybatis的男纸,你伤不起
原文地址 :http://www.iteye.com/topic/1073938
发表一下个人看法。欢迎大神拍砖;
个人一直使用的是Ibatis框架,公司对其进行过小小的改良;
最近换了公司,要使用新的框架。听说mybatis不错;就对其进行了部分的研究;
发现多了一个mapper层;个人感觉就是个dao;
- 解决java数据交换之谜
百合不是茶
数据交换
交换两个数字的方法有以下三种 ,其中第一种最常用
/*
输出最小的一个数
*/
public class jiaohuan1 {
public static void main(String[] args) {
int a =4;
int b = 3;
if(a<b){
// 第一种交换方式
int tmep =
- 渐变显示
bijian1013
JavaScript
<style type="text/css">
#wxf {
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#97FF98);
height: 25px;
}
</style>
- 探索JUnit4扩展:断言语法assertThat
bijian1013
java单元测试assertThat
一.概述
JUnit 设计的目的就是有效地抓住编程人员写代码的意图,然后快速检查他们的代码是否与他们的意图相匹配。 JUnit 发展至今,版本不停的翻新,但是所有版本都一致致力于解决一个问题,那就是如何发现编程人员的代码意图,并且如何使得编程人员更加容易地表达他们的代码意图。JUnit 4.4 也是为了如何能够
- 【Gson三】Gson解析{"data":{"IM":["MSN","QQ","Gtalk"]}}
bit1129
gson
如何把如下简单的JSON字符串反序列化为Java的POJO对象?
{"data":{"IM":["MSN","QQ","Gtalk"]}}
下面的POJO类Model无法完成正确的解析:
import com.google.gson.Gson;
- 【Kafka九】Kafka High Level API vs. Low Level API
bit1129
kafka
1. Kafka提供了两种Consumer API
High Level Consumer API
Low Level Consumer API(Kafka诡异的称之为Simple Consumer API,实际上非常复杂)
在选用哪种Consumer API时,首先要弄清楚这两种API的工作原理,能做什么不能做什么,能做的话怎么做的以及用的时候,有哪些可能的问题
- 在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
- java-归并排序
bylijinnan
java
import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] a={20,1,3,8,5,9,4,25};
mergeSort(a,0,a.length-1);
System.out.println(Arrays.to
- Netty源码学习-CompositeChannelBuffer
bylijinnan
javanetty
CompositeChannelBuffer体现了Netty的“Transparent Zero Copy”
查看API(
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/buffer/package-summary.html#package_description)
可以看到,所谓“Transparent Zero Copy”是通
- Android中给Activity添加返回键
hotsunshine
Activity
// this need android:minSdkVersion="11"
getActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- 静态页面传参
ctrain
静态
$(document).ready(function () {
var request = {
QueryString :
function (val) {
var uri = window.location.search;
var re = new RegExp("" + val + "=([^&?]*)", &
- Windows中查找某个目录下的所有文件中包含某个字符串的命令
daizj
windows查找某个目录下的所有文件包含某个字符串
findstr可以完成这个工作。
[html]
view plain
copy
>findstr /s /i "string" *.*
上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中查找"string&qu
- 改善程序代码质量的一些技巧
dcj3sjt126com
编程PHP重构
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。让我们看一些基本的编程技巧: 尽量保持方法简短 尽管很多人都遵
- SharedPreferences对数据的存储
dcj3sjt126com
SharedPreferences简介: &nbs
- linux复习笔记之bash shell (2) bash基础
eksliang
bashbash shell
转载请出自出处:
http://eksliang.iteye.com/blog/2104329
1.影响显示结果的语系变量(locale)
1.1locale这个命令就是查看当前系统支持多少种语系,命令使用如下:
[root@localhost shell]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
- Android零碎知识总结
gqdy365
android
1、CopyOnWriteArrayList add(E) 和remove(int index)都是对新的数组进行修改和新增。所以在多线程操作时不会出现java.util.ConcurrentModificationException错误。
所以最后得出结论:CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。发生修改时候做copy,新老版本分离,保证读的高
- HoverTree.Model.ArticleSelect类的作用
hvt
Web.netC#hovertreeasp.net
ArticleSelect类在命名空间HoverTree.Model中可以认为是文章查询条件类,用于存放查询文章时的条件,例如HvtId就是文章的id。HvtIsShow就是文章的显示属性,当为-1是,该条件不产生作用,当为0时,查询不公开显示的文章,当为1时查询公开显示的文章。HvtIsHome则为是否在首页显示。HoverTree系统源码完全开放,开发环境为Visual Studio 2013
- PHP 判断是否使用代理 PHP Proxy Detector
天梯梦
proxy
1. php 类
I found this class looking for something else actually but I remembered I needed some while ago something similar and I never found one. I'm sure it will help a lot of developers who try to
- apache的math库中的回归——regression(翻译)
lvdccyb
Mathapache
这个Math库,虽然不向weka那样专业的ML库,但是用户友好,易用。
多元线性回归,协方差和相关性(皮尔逊和斯皮尔曼),分布测试(假设检验,t,卡方,G),统计。
数学库中还包含,Cholesky,LU,SVD,QR,特征根分解,真不错。
基本覆盖了:线代,统计,矩阵,
最优化理论
曲线拟合
常微分方程
遗传算法(GA),
还有3维的运算。。。
- 基础数据结构和算法十三:Undirected Graphs (2)
sunwinner
Algorithm
Design pattern for graph processing.
Since we consider a large number of graph-processing algorithms, our initial design goal is to decouple our implementations from the graph representation
- 云计算平台最重要的五项技术
sumapp
云计算云平台智城云
云计算平台最重要的五项技术
1、云服务器
云服务器提供简单高效,处理能力可弹性伸缩的计算服务,支持国内领先的云计算技术和大规模分布存储技术,使您的系统更稳定、数据更安全、传输更快速、部署更灵活。
特性
机型丰富
通过高性能服务器虚拟化为云服务器,提供丰富配置类型虚拟机,极大简化数据存储、数据库搭建、web服务器搭建等工作;
仅需要几分钟,根据CP
- 《京东技术解密》有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的12月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
12月试读活动回顾:
http://webmaster.iteye.com/blog/2164754
本次技术图书试读活动获奖名单及相应作品如下:
一等奖(两名)
Microhardest:http://microhardest.ite